/*================================================================================
* CopyRight(c)2008, www.k-zone.cn. All rights reserved.
* Code licensed under the BSD License
* Author: Kenshin, Email: fxblog@gmail.com, Blog: http://www.k-zone.cn/zblog/
* Version：v0.1
* Data：2008-2-1
*===============================================================================*/
package com.ken.fanfou.as3.user
{
	import com.ken.fanfou.as3.FanFouEvent;
	import com.ken.fanfou.as3.FanFouMethod;
	import com.ken.fanfou.as3.Common;
	import com.ken.fanfou.as3.Type;
	
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	
	public class Show extends FanFouMethod
	{
		public function Show(value:String,isValidate:Boolean){
			super();
			_url = value;
			_isValidate = isValidate;
		}
		/** 
		* 重写FanFouMethod，使其具有详细方法，而方法是针对与show.xml而写。
		* 显示用户的信息
		* _isValidate = true时，需要身份验证，因此不需要使用ID
		* _isValidate = false时，不需要身份验证，因此需要使用ID，例如Common.ID = Kenshin.L
		* 
		* @param 饭否默认显示的xml条数、默认是20条（这个参数在本方法中无用）
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		public override function Loader(count:int = 20):void{
			if(!_isValidate) _url += Type.FANFOU_ID + Common.UID;
			var request:URLRequest = new URLRequest(_url);
			var loader:URLLoader = new URLLoader();
			loader.load(request);
			loader.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);
			loader.addEventListener(Event.COMPLETE,completeHandler);
		}
		
		/** 
		* 私有方法，如果urlloader出错，则执行这个方法
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		private function errorHandler(event:IOErrorEvent):void{
			trace(111111)
		}

		/** 
		* 私有方法，如果读取正确出错，则执行这个方法。并且dispatchEvent一个事件，已被客户端监听。
		* 其中_xml是它的父类FanFouMethod的方法。 
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		private function completeHandler(event:Event):void{
			_xml = new XML(event.target.data);
			Common.UID = _xml.id; //如何最先调用show的话，Common.UID就为用户验证后当前的ID
			dispatchEvent(new FanFouEvent(FanFouEvent.COMPLETE));
		}
		
		/** 
		* 重写GetXml，将得到的内容→xml中
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		public override function GetXml():XML{
			return _xml;
		}
		
		/**------------------------------------ show.xml的属性 ------------------------------------*/
		/** 
		* show返回的XML数组：user的长度
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		public override function get XmlLength():uint{
			return _xml.length();
		}

		/** 
		* show返回的XML数组：<user>中的内容
		* 包括：screen_name、id、name、location、description、profile_image_url、url、friends_count、followers_count、favourites_count
		*      statuses_count、utc_offset、status_created_at、status_id、status_text
		* 
		* @return Array
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		* 返回的XML、例如：
		* <screen_name>Kenshin</screen_name>
	    * <id>Kenshin.L</id>
	    * <name>Kenshin</name>
	    * <location>辽宁 大连</location>
	    * <description>关注Flex,AS3,AIR,Java,DotNet,Web Design,用户体验</description>
	    * <profile_image_url>http://avatar.fanfou.com/s0/00/4m/h8.jpg?1193907005</profile_image_url>
	    * <url>http://fanfou.com/Kenshin.L</url>
	    * <protected>false</protected>
	    * <friends_count>2</friends_count>
	    * <followers_count>2</followers_count>
	    * <favourites_count>1</favourites_count>
	    * <statuses_count>21</statuses_count>
	    * <utc_offset>28800</utc_offset>
	    * <status>
		* 	<created_at>Fri Feb 01 13:02:22 +0000 2008</created_at>
		* 	<id>lFVQ5pGp5LQ</id>
		* 	<text>ssss</text>
	    * </status>
		*/
		public override function get XmlContent():Array{
			_array.push({screen_name:_xml.screen_name,
			             id:_xml.id,
			             name:_xml.name,
			             location:_xml.location,
			             description:_xml.description,
			             profile_image_url:_xml.profile_image_url,
			             url:_xml.url,
			             friends_count:_xml.friends_count,
			             followers_count:_xml.followers_count,
			             favourites_count:_xml.favourites_count,
			             statuses_count:_xml.statuses_count,
			             utc_offset:_xml.utc_offset,
			             status_created_at:_xml.status.created_at,
			             status_id:_xml.status.id,
			             status_text:_xml.status.text
			            })
			return _array;
		}
	}
}